package DAO;

/**
 * @author matheus_campos	
 */
public abstract class DAOFactory {

	private static ClienteDAO clienteDAO;
	private static EstadioDAO estadioDAO;
	private static EventoDAO eventoDAO;
	private static FuncionarioDAO funcionarioDAO;
	private static IngressoDAO ingressoDAO;
	private static LocalizacaoDAO localizacaoDAO;
	private static TimeDAO timeDAO;
	private static VendaDAO vendaDAO;
	private static VendaIngressoDAO vendaIngressoDAO;
	
	
	
	public static ClienteDAO getClienteDAO() {
		if (clienteDAO == null) {
			clienteDAO = new ClienteDAOImp();
		}

		if (clienteDAO.isConnectionClose()) {
			clienteDAO.openConnection();
		}

		return clienteDAO;
	}
	public static EstadioDAO getEstadioDAO() {
		if (estadioDAO == null) {
			estadioDAO = new EstadioDAOImp();
		}

		if (estadioDAO.isConnectionClose()) {
			estadioDAO.openConnection();
		}

		return estadioDAO;
	}
	public static EventoDAO getEventoDAO() {
		if (eventoDAO == null) {
			eventoDAO = new EventoDAOImp();
		}

		if (eventoDAO.isConnectionClose()) {
			eventoDAO.openConnection();
		}

		return eventoDAO;
	}
	public static FuncionarioDAO getFuncionarioDAO() {
		if (funcionarioDAO == null) {
			funcionarioDAO = new FuncionarioDAOImp();
		}

		if (funcionarioDAO.isConnectionClose()) {
			funcionarioDAO.openConnection();
		}

		return funcionarioDAO;
	}
	public static IngressoDAO getIngressoDAO() {
		if (ingressoDAO == null) {
			ingressoDAO = new IngressoDAOImp();
		}

		if (ingressoDAO.isConnectionClose()) {
			ingressoDAO.openConnection();
		}

		return ingressoDAO;
	}
	public static LocalizacaoDAO getLocalizacaoDAO() {
		if (localizacaoDAO == null) {
			localizacaoDAO = new LocalizacaoDAOImp();
		}

		if (localizacaoDAO.isConnectionClose()) {
			localizacaoDAO.openConnection();
		}

		return localizacaoDAO;
	}
	public static TimeDAO getTimeDAO() {
		if (timeDAO == null) {
			timeDAO = new TimeDAOImp();
		}

		if (timeDAO.isConnectionClose()) {
			timeDAO.openConnection();
		}

		return timeDAO;
	}
	public static VendaDAO getVendaDAO() {
		if (vendaDAO == null) {
			vendaDAO = new VendaDAOImp();
		}

		if (vendaDAO.isConnectionClose()) {
			vendaDAO.openConnection();
		}

		return vendaDAO;
	}

	public static VendaIngressoDAO getVendaIngressoDAO() {
		if (vendaIngressoDAO == null) {
			vendaIngressoDAO = new VendaIngressoDAOImp();
		}

		if (vendaIngressoDAO.isConnectionClose()) {
			vendaIngressoDAO.openConnection();
		}

		return vendaIngressoDAO;
	}

}
